home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / icons+tools / picticon / source / mod / gauge.e < prev    next >
Text File  |  1995-12-22  |  3KB  |  107 lines

  1. OPT MODULE
  2.  
  3. MODULE    'mod/gadgets'
  4. MODULE    'mod/fonts'
  5. MODULE    'mod/compare'
  6.  
  7. MODULE    'gadtools','libraries/gadtools'
  8. MODULE    'intuition/intuition','intuition/gadgetclass'
  9. MODULE    'graphics/gfx','graphics/rastport','graphics/text'
  10. MODULE  'intuition/screens','intuition/gadgetclass'
  11.  
  12. OBJECT newgauge
  13.     rast:PTR TO rastport
  14.     x:INT
  15.     y:INT
  16.     w:INT
  17.     h:INT
  18.     textfont:PTR TO textfont
  19.     textstyle:LONG
  20.     visual:LONG
  21.     drawinfo:PTR TO drawinfo
  22.     lastx:INT
  23.     type:INT
  24. ENDOBJECT
  25.  
  26. EXPORT CONST GAUGETYPE_PLAIN=0,GAUGETYPE_FANCY=1
  27.  
  28. EXPORT PROC newgauge(rast,x,y,w,h,textfont,textstyle,visual,drawinfo,type=GAUGETYPE_PLAIN)
  29.     DEF gauge:PTR TO newgauge
  30.     gauge:=New(SIZEOF newgauge)
  31.     gauge.rast:=rast
  32.     gauge.x:=x
  33.     gauge.y:=y
  34.     gauge.w:=w
  35.     gauge.h:=h
  36.     gauge.textfont:=textfont
  37.     gauge.textstyle:=textstyle
  38.     gauge.visual:=visual
  39.     gauge.drawinfo:=drawinfo
  40.     gauge.type:=type
  41.     gauge.lastx:=-1
  42. ENDPROC gauge
  43.  
  44. EXPORT PROC endgauge(gauge)
  45.     IF gauge THEN Dispose(gauge)
  46. ENDPROC
  47.  
  48. EXPORT PROC cleargauge(gauge:PTR TO newgauge)
  49.     drawbevelbox(gauge.visual,gauge.rast,gauge.x,gauge.y,gauge.w,gauge.h,1,TRUE,0)
  50.     gauge.lastx:=-1
  51. ENDPROC
  52.  
  53. EXPORT PROC statusgauge(gauge:PTR TO newgauge,string)
  54.     IF (string)
  55.         IF StrLen(string)
  56.             cleargauge(gauge)
  57.             textgauge(gauge,string)
  58.         ENDIF
  59.     ENDIF
  60. ENDPROC
  61.  
  62. PROC textgauge(gauge:PTR TO newgauge,string)
  63.     DEF w,h,i
  64.     w,h:=fontsize2(gauge.rast,string,gauge.textfont,gauge.textstyle)
  65.     SetFont(gauge.rast,gauge.textfont)
  66.     SetDrMd(gauge.rast,RP_JAM1)
  67.  
  68.     Move(gauge.rast,gauge.x+((gauge.w)/2)-(w/2),gauge.y+gauge.textfont.baseline+4)
  69.     SetAPen(gauge.rast,Int(gauge.drawinfo.pens+(TEXTPEN*2)))
  70.     Text(gauge.rast,string,StrLen(string))
  71.  
  72. ENDPROC
  73.  
  74. EXPORT PROC fuelgauge(gauge:PTR TO newgauge,quant,max,string=0,ignorelast=FALSE)
  75.     DEF newx
  76.     IF ((gauge>0) AND (max>0))
  77.         IF ignorelast=TRUE THEN gauge.lastx:=0
  78.         SetAPen(gauge.rast,Int(gauge.drawinfo.pens+(FILLPEN*2)))
  79.         newx:=((((gauge.w-7)*100)/(10000/(bigger((quant*100/(max)),1)))))
  80.         IF newx>gauge.lastx
  81.             IF gauge.lastx=-1 THEN gauge.lastx:=0
  82.             SetDrMd(gauge.rast,RP_JAM2)
  83.             RectFill(gauge.rast,gauge.x+gauge.lastx+3,gauge.y+2,gauge.x+newx+3,gauge.y+gauge.h-3)
  84.             IF gauge.type=GAUGETYPE_FANCY
  85.                 qwikbox(gauge,2,1,4)
  86.                 qwikbox(gauge,4,1,3)
  87.                 qwikbox(gauge,4,3,3)
  88.                 qwikbox(gauge,8,1,2)
  89.                 qwikbox(gauge,8,3,2)
  90.                 qwikbox(gauge,8,5,2)
  91.                 qwikbox(gauge,8,7,2)
  92.             ENDIF
  93.             IF (string) THEN textgauge(gauge,string)
  94.         ELSE
  95.             IF newx<gauge.lastx
  96.                 cleargauge(gauge)
  97.                 fuelgauge(gauge,quant,max,string,ignorelast)
  98.             ENDIF
  99.         ENDIF
  100.         gauge.lastx:=newx
  101.     ENDIF
  102. ENDPROC
  103.  
  104. PROC qwikbox(gauge:PTR TO newgauge,div,mul,height)
  105.     drawbevelbox(gauge.visual,gauge.rast,gauge.x+((((gauge.w*100)/(div))*mul)/100),gauge.y+gauge.h-height-1,2,height,0)
  106. ENDPROC
  107.